'''
回归是指通过模型计算出来的y连续

多项式回归参数更多，但无论从框图计算，还是从模型本身的高次方的替换角度多项式回归可以被改造成为线性回归，按照线性回归来求参和预测

多项式回归完全可以转换为线性回归问题，前提是，得先把高次方项替换为一个代号。就是指原始的特征矩阵x，认为的扩充成为具有高次方项特征的新的矩阵x
'''

from sklearn.preprocessing import PolynomialFeatures
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
import numpy as np

X = np.random.rand(100, 1)  # 100 个样本，每个样本一个特征
y = 3 * X.squeeze() ** 2 + np.random.randn(100)  # 生成一些二次关系的数据
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.1)

#将X变为多项式特征
pf = PolynomialFeatures(degree=2)
pf.fit_transform(X_train)
X_train = pf.fit_transform(X_train)
X_test = pf.transform(X_test)

#创建模型
lr = LinearRegression()

#模型训练
lr.fit(X_train,y_train)

#模型评估
y_predict = lr.predict(X_test)
print(mean_squared_error(y_predict,y_test))

#模型预测
y_train_predict= lr.predict(X_train)
print(mean_squared_error(y_train_predict,y_train)) 